package com.bdqn.ch05.SL.Service.impl;

import com.bdqn.ch05.SL.mapper.UserDao;
import com.bdqn.ch05.SL.Service.UserService;
import com.bdqn.ch05.SL.entity.User;

import com.bdqn.ch05.SL.mapper.impl.UserDaoImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * UserServiceImpl
 * 用户模块业务实现
 *
 * @aurhor Administrator  whs
 * @since 2024/7/10
 */


// 示例23 使用 @Service 注解 将 UserServiceImpl 的实例注册到 Spring 容器中 ，然后通过 @Autowired 注解将userDao 注入当前类中
// 实现了和配置文件中 <property name="userDao" ref="userDao"/> 标签相同的功能
@Service("userService")
public class UserServiceImpl implements UserService {

//    @Resource(name="userDao")

//    @Resource(type = UserDaoImpl.class)// 使用 @Resource 注解的方式 通过type参数 直接指定要注入的Bean 类型

    // 使用 注解方式标记切面
    @Autowired
    private UserDao userDao;




//    private UserDao userDao = new UserDaoImpl();

    // 通过工厂获取所依赖的UserDao对象
//    private UserDao userDao = UserDaoFactory.getInstance();

    /**
     * 声明接口类型的引用，和具体实现类解耦合
     */
//    private UserDao userDao ;

//    /**
//     * 无参构造
//     * @param
//     */
//    public UserServiceImpl() {}
//
//    //用于为dao属性赋值的构造方法
//    public UserServiceImpl(UserDao userDao) {
//        this.userDao = userDao;
//    }

    /**
     * 保存用户信息
     * @param user
     */
    @Override
    public void save(User user) {
        //调用UserDao的方法保存用户信息
        userDao.save(user);
    }

    /**
     * dao 属性的 setter 访问器，会被 Spring调用 ， 实现设值注入
     * @param userDao
     */
//    public void setUserDao(UserDao userDao) {
//        this.userDao = userDao;
//    }

}
